package com.tbynet.jwp.repository.spi;

import com.tbynet.jwp.framework.core._JwpService;
import com.tbynet.jwp.model.Posts;

import java.math.BigInteger;
import java.util.List;

/**
 * 文章导出服务接口
 * @ClassName: PostExportService
 * @Description: 负责文章数据的导出功能，支持多种格式
 * @Author: 佰亿互联
 * @Date: 2025年11月4日
 *
 * @Copyright: 2025 www.tbynet.com Inc. All rights reserved.
 * 注意: 本内容仅限于内部传阅，禁止外泄以及用于其他的商业目
 */
public interface PostExportService extends _JwpService<Posts> {

    /**
     * 获取导出文章列表
     * @param status 文章状态
     * @param category 分类ID
     * @param dateFrom 开始日期
     * @param dateTo 结束日期
     * @return 文章列表
     */
    List<Posts> getPostsForExport(String status, String category, String dateFrom, String dateTo);

    /**
     * 获取文章分类名称
     * @param postId 文章ID
     * @return 分类名称字符串
     */
    String getPostCategories(BigInteger postId);

    /**
     * 获取文章标签名称
     * @param postId 文章ID
     * @return 标签名称字符串
     */
    String getPostTags(BigInteger postId);

    /**
     * CSV格式转义
     * @param value 原始值
     * @return 转义后的CSV值
     */
    String escapeCsv(String value);

    /**
     * XML格式转义
     * @param value 原始值
     * @return 转义后的XML值
     */
    String escapeXml(String value);

    /**
     * 获取站点标题
     * @return 站点标题
     */
    String getSiteTitle();

    /**
     * 获取站点URL
     * @return 站点URL
     */
    String getSiteUrl();

    /**
     * 获取站点描述
     * @return 站点描述
     */
    String getSiteDescription();

    /**
     * 获取文章URL
     * @param post 文章对象
     * @return 文章URL
     */
    String getPostUrl(Posts post);

    /**
     * 获取作者名称
     * @param authorId 作者ID
     * @return 作者名称
     */
    String getAuthorName(BigInteger authorId);
}